Conventional graphical user interfaces (GUIs), such as Microsoft Windows, make extensive use of graphic elements, or icons, to represent computer applications, functions and documents. These icons may be directly manipulated by a user, using a mouse or other such pointing device, to perform useful tasks. For example, an document icon may be "dragged" to and "dropped" on a printer icon to cause a document represented by the document icon to be printed on a printer represented by the printer icon.
Existing GUIs employ bit-oriented methods to enable a user to create new icons or to modify existing icons in which a pointing device is used to manipulate individual bits of a graphic pad area of a GUI window. Many GUIs provide enhancements to the basic bit-manipulation technique in the form of predefined drawing elements, or "tools", such as circles and rectangles, and various coloring methods, such as color fills, gradient fills and textures. To create or modify an icon, a user selects a tool from a "tool palette" contained within the window and selects a color to be associated with the selected tool from a "color palette" contained within the window, and then "paints" an icon on the the graphic pad area in a bit-oriented fashion. The completed icon is stored as a bit-mapped image in the computer's memory.
Such bit-oriented icon construction and modification methods enable a user to create detailed and unique icons, because each bit in the graphic pad area is independently manipulable. Furthermore, there are no rules governing how the icon must be constructed, so that any uniformity among various icons is a function of the discipline of the user and the few constraints on the GUI program. These advantages quickly become disadvantages, however, in situations in which the user is not a skilled graphic designer, rapid development of an icon is desirable, or icon uniformity is necessary.
One solution to the above problems involves importing preexisting icons, which may be constructed through cut-and-paste or file import operations, and overlaying icon elements using a GUI construction program. This is a complicated process which requires an appreciable amount of user expertise and significant computer system overhead.
Another solution involves permitting the user to select icons from a predefined library of icons and to modify icons by manipulating a selected icon in some limited drawing-type application. While this requires virtually no expertise or artistic ability on the part of the user, the number of icons that may be "created" is restricted by the constraints of the library. Furthermore, a substantial amount of storage is required to maintain an icon library large enough to give the user an acceptable number and variety of icons from which to choose.
Therefore, what is needed is a icon construction and customization system that is easy to use, provides uniformity across designer skill levels and enables rapid generation of icons, but that does not require the user to possess a particular level of artistic skill or design expertise or restrict a user to a predefined library of icons.